﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BLL;

namespace QuanLyDatDai
{
    public partial class FrmGiayChungNhan : Form
    {

        List<Label> labelToaDoX = new List<Label>();
        List<Label> labelToaDoY = new List<Label>();
        List<TextBox> textBoxToaDoX = new List<TextBox>();
        List<TextBox> textBoxToaDoY = new List<TextBox>();
        #region Xử lí control
        public FrmGiayChungNhan()
        {
            InitializeComponent();
        }

        private void FrmChuSoHuu_Load(object sender, EventArgs e)
        {
            try
            {
                CbbNguonGoc.DataSource = new BLL.GiayChungNhanBLL().DanhSachNguonGoc();
            }
            catch
            {
                MessageBox.Show("Không thể kết nối đến Oracle","Lỗi");
                this.Close();
            }
        }
      
        private void tabPageGiaySuDung_Click(object sender, EventArgs e)
        {
            CbbNguonGoc.DataSource = new BLL.GiayChungNhanBLL().DanhSachNguonGoc();
        }
        
        private void btnGiaySuDungLuu_Click(object sender, EventArgs e)
        {

            string maCSD = "";
            string maThuaDat = "";
            GiayChungNhanBLL giaysudung = new GiayChungNhanBLL();
            ChuSuDungBLL chusudung = new ChuSuDungBLL();
            ThuaDatBLL thuadat = new ThuaDatBLL();
            if (!ValidateTabPageGiayChungNhan())
            {
                MessageBox.Show("Mời nhập dữ liệu hợp lệ","Thông báo");
                tabControl1.SelectedTab = tabPageGiaySuDung;
                return;
            }
            if(listViewDuaVoSo.Items.Count!=0)
            {
                for (int i = 0; i < listViewDuaVoSo.Items.Count; i++)
                {
                    maCSD = listViewDuaVoSo.Items[i].Text;
                }
                //maCSD = listBoxTimKiemChuSuDung.SelectedItem.ToString();
                //string maThuaDat = listBoxTimKiemChuSuDung.SelectedItem.ToString();
            }        
            else
            {
                MessageBox.Show("Bạn chưa đưa chủ sử dụng vào trong sổ chứng nhận","Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Error);
                tabControl1.SelectedTab = tabPageChuSuDung;
                return;
            }
            try
            {
                maThuaDat = listViewDSThuaDat.Items[0].Text;
            }
            catch
            {
                MessageBox.Show("Bạn chưa đưa mã thửa đất vào trong giấy chứng nhận","Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Error);
                tabControl1.SelectedTab = tabPageThuaDat;
                return;
            }
            try
            {
                giaysudung.ThemGiaySuDung(txtMaGiayChungNhan.Text, dateTimePickerNgayKy.Value.Date,
                    txtNguoiKy.Text,txtChucVuNguoiKy.Text, txtDonViCap.Text, CbbNguonGoc.SelectedValue.ToString(),maCSD,maThuaDat);

                //chusudung.ThemChuSuDungVoGiayChungNhan(txtMaGiayChungNhan.Text, maCSD);
                //thuadat.ThemThuaDatVoGiayChungNhan(txtMaGiayChungNhan.Text,maThuaDat);

                MessageBox.Show("Thêm Giấy sử dụng thành công", "Thông báo", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.InnerException.Message, "Lỗi");
            }


        }

        private void btnGiaySuDungCancel_Click(object sender, EventArgs e)
        {
            txtMaGiayChungNhan.Text = "";
            txtDonViCap.Text = "";
            txtChucVuNguoiKy.Text = "";
            txtNguoiKy.Text = "";
        }               

        private void btnTim_Click(object sender, EventArgs e)
        {
            ChuSuDungBLL gsd = new ChuSuDungBLL();
            List<TIMCHUSUDUNG_Result> csd = new List<TIMCHUSUDUNG_Result>();
            ListViewItem item;

            //string maChuSuDung = "";
            listViewTimKiemChuSuDung.Items.Clear();
            csd = gsd.TimVaLayChuSuDung(txtTenChuSoHuu.Text,txtSoCmnd.Text);
            if (csd.Count!=0)
            {
                //listBoxTimKiemChuSuDung.Items.Add(maChuSuDung);
                //dataGridViewTimKiemChuSuDung.DataSource = gsd.TimVaLayMaCSD(txtTenCSH.Text,txtSoCMND.Text);            
                for(int i=0;i<csd.Count;i++)
                {
                    item =listViewTimKiemChuSuDung.Items.Add(csd[i].MACSD.ToString());
                    item.SubItems.Add(csd[i].TENCSD.ToString());
                    item.SubItems.Add(csd[i].SO_CMND_QDTL_GPKD.ToString());
                }
            }
            else
            {
                DialogResult result = MessageBox.Show("Dữ liệu không tìm thấy! Bạn có muốn thêm mới chủ sở hữu", "Thông Báo", MessageBoxButtons.YesNo);
                if (result == DialogResult.Yes)
                {
                    FrmThemChuSuDung themcsd = new FrmThemChuSuDung();
                    themcsd.Visible = true;
                }
            }
            //try
            //{
            //    maChuSuDung = gsd.TimVaLayMaCSD(txtTenCSH.Text, txtSoCMND.Text);
            //}
            //catch
            //{ }
            //csd = gsd.TimVaLayMaCSD(txtTenCSH.Text, txtSoCMND.Text);
            
            
        }

        private void btnTimThuaDat_Click(object sender, EventArgs e)
        {
            ThuaDatBLL td = new ThuaDatBLL();
            TIMTHUADAT_Result thuadat = new TIMTHUADAT_Result();

            ListViewItem item;            
            listViewTimKiemThuaDat.Items.Clear();
            try
            {
                thuadat = td.TimKiemMaThuaDat(txtMaThuaDat.Text);
                if (thuadat != null)
                {
                    item = listViewTimKiemThuaDat.Items.Add(thuadat.MATHUADAT.ToString());
                    item.SubItems.Add(thuadat.DIACHI.ToString());
                    item.SubItems.Add(thuadat.THOIHAN.ToString());
                }
                else
                {
                    DialogResult result = MessageBox.Show("Dữ liệu không tìm thấy! Bạn có muốn thêm mới thửa đất", "Thông Báo", MessageBoxButtons.YesNo);
                    if (result == DialogResult.Yes)
                    {
                        FrmThemThuaDat frmThuaDat = new FrmThemThuaDat();
                        frmThuaDat.Visible = true;
                    }
                }
            }
            catch
            {
                MessageBox.Show("Mời nhập giá trị ô tìm kiếm", "Lỗi");
            }

            
        }

        List<THUADAT> dsTimKiem= new List<THUADAT>();

        private void btnLayThuaDat_Click(object sender, EventArgs e)
        {
            //listBoxDuaGSD.Items.Add(listBoxTimKiem.SelectedItem);
            ThuaDatBLL thuadat = new ThuaDatBLL();
            ListViewItem item;
            if (listViewTimKiemThuaDat.SelectedItems.Count == 0)
                return;
            else
            {
                listViewDSThuaDat.Items.Clear();
                int i = listViewTimKiemThuaDat.FocusedItem.Index;
                item = new ListViewItem();
                item = listViewDSThuaDat.Items.Add(listViewTimKiemThuaDat.Items[i].Text.Trim());
                item.SubItems.Add(listViewTimKiemThuaDat.Items[i].SubItems[1].Text);
                item.SubItems.Add(listViewTimKiemThuaDat.Items[i].SubItems[2].Text);
            }

        }

        private void btnDuaVoDS_Click(object sender, EventArgs e)
        {
            ChuSuDungBLL chusudung = new ChuSuDungBLL();
            ListViewItem item;
            if (listViewTimKiemChuSuDung.SelectedItems.Count == 0)
                return;
            else
            {

                int i = listViewTimKiemChuSuDung.FocusedItem.Index;
                if (!KiemTraItemTonTaiListView())
                {
                    item = new ListViewItem();
                    item = listViewDuaVoSo.Items.Add(listViewTimKiemChuSuDung.Items[i].Text.Trim());
                    item.SubItems.Add(listViewTimKiemChuSuDung.Items[i].SubItems[1].Text);
                    item.SubItems.Add(listViewTimKiemChuSuDung.Items[i].SubItems[2].Text);
                }
                else
                {
                    MessageBox.Show("Item này đã tồn tại trong danh sách","Thông báo");
                }
            }          
        }

        private void btnThemCSD_Click(object sender, EventArgs e)
        {
            FrmThemChuSuDung chusudung = new FrmThemChuSuDung();
            chusudung.Visible = true;
        }

        private void btnThemThuaDat_Click(object sender, EventArgs e)
        {
            FrmThemThuaDat thuadat = new FrmThemThuaDat();
            thuadat.Visible = true;
        }

        private bool KiemTraItemTonTaiListView()
        {
            bool check = false;
            foreach (ListViewItem item in listViewDuaVoSo.Items)
            {
                if (item.Text == listViewTimKiemChuSuDung.SelectedItems[0].Text.Trim())
                {
                    check = true;
                    break;
                }
            }
            return check;
        }
    

        #endregion

        #region code lấy giá trị từ textbox đưa vào mảng decimal
        //decimal[] toaDoThuaDat = new decimal[labelToaDoX.Count * 2];
        //    string a = "";
        //    int indexX = 0;
        //    int indexY = 0;
        //    for (int i = 0; i < textBoxToaDoX.Count * 2; i++)
        //    {
        //        if (i % 2 == 0)
        //        {
        //            toaDoThuaDat[i] = Decimal.Parse(textBoxToaDoX[indexX].Text);
        //            indexX++;
        //        }
        //        else
        //        {
        //            toaDoThuaDat[i] = Decimal.Parse(textBoxToaDoY[indexY].Text);
        //            indexY++;
        //        }
        //    }
#endregion


        #region validate dữ liệu nhập
        

        private bool ValidateTxtMaGiayChungNhan()
        {
            bool bStatus = true;
            if (string.IsNullOrEmpty(txtMaGiayChungNhan.Text))
            {
                errorProviderGiayChungNhan.SetError(txtMaGiayChungNhan, "Mời bạn nhập mã giấy chứng nhận");
                bStatus = false;
            }
            else
                errorProviderGiayChungNhan.SetError(txtMaGiayChungNhan, "");
            return bStatus;
        }

        private bool ValidateTxtDonViCap()
        {
            bool bStatus = true;
            if (string.IsNullOrEmpty(txtDonViCap.Text))
            {
                errorProviderGiayChungNhan.SetError(txtDonViCap, "Mời bạn nhập đơn vị cấp");
                bStatus = false;
            }
            else
                errorProviderGiayChungNhan.SetError(txtDonViCap, "");
            return bStatus;
        }

        private bool ValidateTxtNguoiKy()
        {
            bool bStatus = true;
            if (string.IsNullOrEmpty(txtNguoiKy.Text))
            {
                errorProviderGiayChungNhan.SetError(txtNguoiKy, "Mời bạn nhập Người ký");
                bStatus = false;
            }
            else
                errorProviderGiayChungNhan.SetError(txtNguoiKy, "");
            return bStatus;
        }

        private bool ValidateTxtChucVuNguoiKy()
        {
            bool bStatus = true;
            if (string.IsNullOrEmpty(txtChucVuNguoiKy.Text))
            {
                errorProviderGiayChungNhan.SetError(txtChucVuNguoiKy, "Mời bạn nhập Chức vụ người kí");
                bStatus = false;
            }
            else
                errorProviderGiayChungNhan.SetError(txtChucVuNguoiKy, "");
            return bStatus;
        }

        private bool ValidateTabPageGiayChungNhan()
        {
            bool bMaGiayChungNhan = ValidateTxtMaGiayChungNhan();
            bool bDonViCap = ValidateTxtDonViCap();
            bool bNguoiKy = ValidateTxtNguoiKy();
            bool bChucVuNguoiKy = ValidateTxtChucVuNguoiKy();
            if(!bMaGiayChungNhan||!bDonViCap||!bNguoiKy||!bChucVuNguoiKy)
                return false;
            else
                return true;
        }

        private void txtMaGiayChungNhan_Validating(object sender, CancelEventArgs e)
        {
            ValidateTxtMaGiayChungNhan();
        }

        private void txtDonViCap_Validating(object sender, CancelEventArgs e)
        {
            ValidateTxtDonViCap();
        }

        private void txtNguoiKy_Validating(object sender, CancelEventArgs e)
        {
            ValidateTxtNguoiKy();
        }

        private void txtChucVuNguoiKy_Validating(object sender, CancelEventArgs e)
        {
            ValidateTxtChucVuNguoiKy();
        }

        #endregion                                  
                
    }
}
